package oop;

/**
 * 继承  extends"扩展"
 * 作用：代码复用，更加容易实现类的扩展    方便建模
 */
/*
父类也称超类、基类。  子类:派生类
java中只有单继承，没有像C++那样的多继承。多继承会引起混乱，使得继承
链过于复杂，系统难于维护
java中类没有多继承，接口有多继承
** 子类继承父类，可以得到父类的全部属性和方法（除了父类的构造方法）
    但不见得可以直接访问（例如：父类私有的属性和方法）
如果定义一个类时，没有调用extends,则它的父类是：java.lang.Object)
*/

public class TestExtends {

    public static void main(String[] args) {
        //证明调用Person成功
        Student s1 = new Student("华", 170, "java");
        Boy b1 = new Boy("小孩", 120, "绘画");
        //instanceof 运算符进行类型判断
        System.out.println(s1 instanceof Student);
        System.out.println(s1 instanceof Person);
    }
}
class Person /*extends Object 默认*/{
    String name;
    int height;
    public void rest(){
        System.out.println("休息");
    }

}
class Student extends Person{
   /* String name;
    int height;  继承了父类不写*/
   String major;//专业
   /*public void rest(){
        System.out.println("休息");
    }*/
    public void  study(){
        System.out.println("学习");
        rest();
        System.out.println("this.name");//继承了Person类，所以可以打印
    }

    //构造器
    //Student调用Person
    public Student(String name,int height,String major){
            this.name = name;
            this.height = height;
            this.major = major;
        }
    }
class Boy extends Person {
    String interest;//兴趣
    public Boy(String name,int height,String interest){
        this.name = name;
        this.height = height;
        this.interest = interest;
    }
}

